package com.gzx.plugin.tjzy.modular.sms.batch.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gzx.plugin.tjzy.modular.sms.batch.bo.GzxSmsBatchAddBo;
import com.gzx.plugin.tjzy.modular.sms.batch.bo.GzxSmsBatchQueryBo;
import com.gzx.plugin.tjzy.modular.sms.batch.vo.*;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @author zjt
 * @description
 * @since 2025/3/6 17:20
 */
public interface GzxSmsService {

    /**
     * 分页查询短信发送主表
     *
     * @param smsBatchQueryBo
     * @return
     */
    Page<GzxSmsBatchVo> pageList(GzxSmsBatchQueryBo smsBatchQueryBo);

    /**
     * 查询短信发送详情
     *
     * @param smsBatchQueryBo
     * @return
     */
    Page<GzxSmsDetailVo> pageDetail(GzxSmsBatchQueryBo smsBatchQueryBo);

    /**
     * 导入短信发送数据
     *
     * @param smsBatchAddBo
     * @param file
     * @return
     */
    String importExcel(GzxSmsBatchAddBo smsBatchAddBo, MultipartFile file);

    /**
     * 发送测试短信
     *
     * @param batchNumber
     */
    void testSend(String batchNumber);

    /**
     * 开始发送短信
     *
     * @param batchNumber
     */
    void startSend(String batchNumber);

    /**
     * 导出短信发送明细
     *
     * @param smsBatchQueryBo
     */
    void export(GzxSmsBatchQueryBo smsBatchQueryBo, HttpServletResponse httpServletResponse);

    /**
     * 自动发送短信
     */
    void autoSend();

    /**
     * 短信发送统计
     */
    GzxStatisticVo smsStatistic(String batchNumber);

    /**
     * 获取供应商顺序，这批发送了多少条
     */
    GzxSmsStatisticVo getQuantityOrder(String batchNumber);

    /**
     * 当前批次号发送成功，失败的数量
     */
    List<GzxSmsStatisticVo> getSuccessFailedNum(String batchNumber);

    /**
     * 当前批次号发送状态未知数量
     */
    List<GzxSmsStatisticVo> getUnknowNum(String batchNumber);

    /**
     * 查询短信供应商的条数
     */
    List<GzxStatisticNumVo> getStatistic(String batchNumber);

    /**
     * 短信告警
     */
    void smsWarn();
}
